<?php
/**
 * View_Finist
 *
 * Класс View_Finist отвечает за вывод информации, связанной с таблицей Финиста
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Finist extends View_Base {

	/**
	 * Выводит полную статистику по финисту
	 * 
	 * @param array $arrStat
	 */
	public function showAllStat(array $arrStat) {
		Service_Debug::setDebug();
		$this->_showMonthStat($arrStat['total']);
		foreach ($arrStat['monthly'] as $monthName => $arrMonthData) {
			$this->_showMonthStat($arrMonthData, $monthName);
		}
		
	}

	/**
	 * Выводит полную статистику по финисту с разбивкой по компаниям
	 * 
	 * @param array $arrStat
	 */
	public function showAllStatByCompanies(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		$totalOrdersAmount = 0;
		$totalProfit = 0;
		foreach ($arrStat as $arrCompanyStat) {
			$totalOrdersAmount += $arrCompanyStat['orders_amount'];
			$totalProfit += $arrCompanyStat['total_profit'];
		}
		echo '<table border>';
			echo '<tr>';
				echo '<th>№</th>';
				echo '<th>ID</th>';
				echo '<th>Компания</th>';
				echo '<th>Менеджер</th>';
				echo '<th>Заказов</th>';
				echo '<th>Прибыль</th>';
				echo '<th>Суммарное заказов</th>';
				echo '<th>Суммарная прибыль</th>';
			echo '</tr>';
			$currentOrdersAmountSum = 0;
			$surrentProfitSum = 0;
			$i = 0;
			foreach ($arrStat as $arrCompanyStat) {
				$currentOrdersAmountSum += $arrCompanyStat['orders_amount'];
				$surrentProfitSum += $arrCompanyStat['total_profit'];
				echo '<tr>';
					echo '<td>' . ++$i . '</td>';
					echo '<td>' . $arrCompanyStat['ID_company'] . '</td>';
					echo '<td><a href="' . W_ADMIN . 'finist/company/' . $arrCompanyStat['ID_company'] . '/">' . $arrCompanyStat['company'] . '</a></td>';
					echo '<td>' . $arrCompanyStat['manager'] . '</td>';
					echo '<td>' . number_format($arrCompanyStat['orders_amount']) . '</td>';
					echo '<td>' . number_format($arrCompanyStat['total_profit']) . '</td>';
					echo '<td>';
						echo number_format($currentOrdersAmountSum);
						echo '<br />';
						echo round(($currentOrdersAmountSum / $totalOrdersAmount * 100), 2) . '%';
					echo '</td>';
					echo '<td>';
						echo number_format($surrentProfitSum);
						echo '<br />';
						echo round(($surrentProfitSum / $totalProfit * 100), 2) . '%';
					echo '</td>';
				echo '</tr>';
			}
		echo '</table>';
	}

	/**
	 * Выводит полную статистику по финисту с разбивкой по менеджерам
	 * 
	 * @param array $arrStat
	 */
	public function showAllStatByManagers(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		$totalOrdersAmount = 0;
		$totalProfit = 0;
		foreach ($arrStat as $arrManagerStat) {
			$totalOrdersAmount += $arrManagerStat['orders_amount'];
			$totalProfit += $arrManagerStat['total_profit'];
		}
		echo '<table border>';
			echo '<tr>';
				echo '<th>№</th>';
				echo '<th>ID</th>';
				echo '<th>Менеджер</th>';
				echo '<th>Заказов</th>';
				echo '<th>Прибыль</th>';
				echo '<th>Суммарное заказов</th>';
				echo '<th>Суммарная прибыль</th>';
			echo '</tr>';
			$currentOrdersAmountSum = 0;
			$surrentProfitSum = 0;
			$i = 0;
			foreach ($arrStat as $arrManagerStat) {
				$currentOrdersAmountSum += $arrManagerStat['orders_amount'];
				$surrentProfitSum += $arrManagerStat['total_profit'];
				echo '<tr>';
					echo '<td>' . ++$i . '</td>';
					echo '<td>' . $arrManagerStat['ID_manager'] . '</td>';
					echo '<td>' . $arrManagerStat['manager'] . '</td>';
					echo '<td>' . number_format($arrManagerStat['orders_amount']) . '</td>';
					echo '<td>' . number_format($arrManagerStat['total_profit']) . '</td>';
					echo '<td>';
						echo number_format($currentOrdersAmountSum);
						echo '<br />';
						echo round(($currentOrdersAmountSum / $totalOrdersAmount * 100), 2) . '%';
					echo '</td>';
					echo '<td>';
						echo number_format($surrentProfitSum);
						echo '<br />';
						echo round(($surrentProfitSum / $totalProfit * 100), 2) . '%';
					echo '</td>';
				echo '</tr>';
			}
		echo '</table>';
	}

	/**
	 * Выводит полную статистику по финисту с разбивкой по дням
	 * 
	 * @param array $arrStat
	 */
	public function showAllStatByDays(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		$totalOrdersAmount = 0;
		$totalProfit = 0;
		foreach ($arrStat as $arrDayStat) {
			$totalOrdersAmount += $arrDayStat['orders_amount'];
			$totalProfit += $arrDayStat['total_profit'];
		}
		echo '<table border>';
			echo '<tr>';
				echo '<th>№</th>';
				echo '<th>Число</th>';
				echo '<th>Заказов</th>';
				echo '<th>Прибыль</th>';
			echo '</tr>';
			$currentOrdersAmountSum = 0;
			$surrentProfitSum = 0;
			$i = 0;
			foreach ($arrStat as $arrDayStat) {
				$date=explode("-", $arrDayStat['date']);
				$currentOrdersAmountSum += $arrDayStat['orders_amount'];
				$surrentProfitSum += $arrDayStat['total_profit'];
				echo '<tr>';
					echo '<td>' . ++$i . '</td>';
					echo '<td>' . $arrDayStat['date'] . ' (' . Service_Function::utf8_substr(Service_Date::$arrWeekDays[date("w", mktime(0, 0, 0, $date[1], $date[2], $date[0]))], 0, 3) . ')</td>';
					echo '<td>' . number_format($arrDayStat['orders_amount']) . '</td>';
					echo '<td>' . number_format($arrDayStat['total_profit']) . '</td>';
				echo '</tr>';
			}
		echo '</table>';
	}

	/**
	 * Выводит полную статистику по финисту с разбивкой по дням недели
	 * 
	 * @param array $arrStat
	 */
	public function showAllStatByWeekDays(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		$totalOrdersAmount = 0;
		$totalProfit = 0;
		foreach ($arrStat as $arrDayStat) {
			$totalOrdersAmount += $arrDayStat['orders_amount'];
			$totalProfit += $arrDayStat['total_profit'];
		}
		echo '<table border>';
			echo '<tr>';
				echo '<th>№</th>';
				echo '<th>День недели</th>';
				echo '<th>Недель</th>';
				echo '<th>Заказов</th>';
				echo '<th>Заказов в среднем</th>';
				echo '<th>Прибыль</th>';
				echo '<th>Прибыль в среднем</th>';
			echo '</tr>';
			$currentOrdersAmountSum = 0;
			$surrentProfitSum = 0;
			$i = 0;
			foreach ($arrStat as $arrDayStat) {
				$currentOrdersAmountSum += $arrDayStat['orders_amount'];
				$surrentProfitSum += $arrDayStat['total_profit'];
				echo '<tr>';
					echo '<td>' . ++$i . '</td>';
					echo '<td>' . Service_Date::$arrWeekDays[$arrDayStat['week_day']] . '</td>';
					echo '<td>' . $arrDayStat['weeks'] . '</td>';
					echo '<td>' . number_format($arrDayStat['orders_amount']) . '</td>';
					echo '<td>' . number_format($arrDayStat['orders_amount'] / $arrDayStat['weeks']) . '</td>';
					echo '<td>' . number_format($arrDayStat['total_profit']) . '</td>';
					echo '<td>' . number_format($arrDayStat['total_profit'] / $arrDayStat['weeks']) . '</td>';
				echo '</tr>';
			}
		echo '</table>';
	}

	/**
	 * Выводит полную статистику по финисту с разбивкой по типам цен
	 * 
	 * @param array $arrStat
	 */
	public function showAllStatByPriceTypes(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		$totalOrdersAmount = 0;
		$totalProfit = 0;
		foreach ($arrStat as $arrManagerStat) {
			$totalOrdersAmount += $arrManagerStat['orders_amount'];
			$totalProfit += $arrManagerStat['total_profit'];
		}
		echo '<table border>';
			echo '<tr>';
				echo '<th>№</th>';
				echo '<th>Тип цены</th>';
				echo '<th>Заказов</th>';
				echo '<th>Прибыль</th>';
			echo '</tr>';
			$currentOrdersAmountSum = 0;
			$surrentProfitSum = 0;
			$i = 0;
			foreach ($arrStat as $arrManagerStat) {
				$currentOrdersAmountSum += $arrManagerStat['orders_amount'];
				$surrentProfitSum += $arrManagerStat['total_profit'];
				echo '<tr>';
					echo '<td>' . ++$i . '</td>';
					echo '<td>' . $arrManagerStat['price_type'] . '</td>';
					echo '<td>' . number_format($arrManagerStat['orders_amount']) . '</td>';
					echo '<td>' . number_format($arrManagerStat['total_profit']) . '</td>';
				echo '</tr>';
			}
		echo '</table>';
	}

	/**
	 * Выводит полную статистику по финисту с разбивкой по типам машин
	 * 
	 * @param array $arrStat
	 */
	public function showAllStatByCarTypes(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		$totalOrdersAmount = 0;
		$totalProfit = 0;
		foreach ($arrStat as $arrManagerStat) {
			$totalOrdersAmount += $arrManagerStat['orders_amount'];
			$totalProfit += $arrManagerStat['total_profit'];
		}
		echo '<table border>';
			echo '<tr>';
				echo '<th>№</th>';
				echo '<th>Тип машины</th>';
				echo '<th>Заказов</th>';
				echo '<th>Прибыль</th>';
			echo '</tr>';
			$currentOrdersAmountSum = 0;
			$surrentProfitSum = 0;
			$i = 0;
			foreach ($arrStat as $arrManagerStat) {
				$currentOrdersAmountSum += $arrManagerStat['orders_amount'];
				$surrentProfitSum += $arrManagerStat['total_profit'];
				echo '<tr>';
					echo '<td>' . ++$i . '</td>';
					echo '<td>' . $arrManagerStat['car_category'] . '</td>';
					echo '<td>' . number_format($arrManagerStat['orders_amount']) . '</td>';
					echo '<td>' . number_format($arrManagerStat['total_profit']) . '</td>';
				echo '</tr>';
			}
		echo '</table>';
	}
	
	/**
	 * Выводит список заказов
	 *
	 * @param array $arrStat
	 */
	public function showOrdersList(array $arrStat) {
		Service_Debug::setDebug();
		if (!$arrStat) return false;
		echo '<table border>';
		echo '<tr>';
		echo '<th>№</th>';
		echo '<th>ID</th>';
		echo '<th>Откуда</th>';
		echo '<th>Куда</th>';
		echo '<th>Стоимость клиенту</th>';
		echo '<th>Прибыль</th>';
		echo '<th>Тип оплаты</th>';
		echo '<th>Тип авто</th>';
		echo '<th>Менеджер</th>';
		echo '</tr>';
		$i = 0;
		foreach ($arrStat as $arrOrderStat) {
			echo '<tr>';
				echo '<td>' . ++$i . '</td>';
				echo '<td>' . $arrOrderStat['ID_finist'] . '</td>';
				echo '<td>' . $arrOrderStat['place_start'] . '</td>';
				echo '<td>' . $arrOrderStat['place_finish'] . '</td>';
				echo '<td>' . number_format($arrOrderStat['price_client']) . '</td>';
				echo '<td>' . number_format($arrOrderStat['profit']) . '</td>';
				echo '<td>' . $arrOrderStat['pay_type'] . '</td>';
				echo '<td>' . $arrOrderStat['car_category'] . '</td>';
				echo '<td>' . $arrOrderStat['manager'] . '</td>';
			echo '</tr>';
		}
		echo '</table>';
	}
	
	/**
	 * Выводит блок с заголовкой и соответтсвующей статистикой за месяц
	 * 
	 * @param array $arrMonthStat - массив со статистикой за месяц
	 * @param string $month - месяц в формате БД, за которой идет стаистика (null, если общая статистика)
	 */
	private function _showMonthStat($arrMonthStat, $month = null) {
		Service_Debug::setDebug();
		echo '<div class="monthStat">';
			echo '<h2>';
				if (!$month) echo 'Общая статистика';
				else echo 'Статистика за ' . Service_Date::getMonth(substr($month, 5, 2))  . ' ' . substr($month, 0, 4);
			echo '</h2>';
			echo '<div class="data">';
				$this->_showMonthStatData($arrMonthStat);
			echo '</div>';
		echo '</div>';
	}
	
	/**
	 * Выводит информацию по конкретному месяцу заказа
	 * 
	 * @param array $arrMonthStat - массив со статистикой за месяц
	 */
	private function _showMonthStatData(array $arrMonthStat) {
		$objExchange = Service_Exchange::instance();
		echo '<p>';
			echo '<b>Количество заказов:</b> ' . $arrMonthStat['orders_amount'];
		echo '</p>';
		echo '<p>';
			echo '<b>Прибыль:</b> ' . number_format($arrMonthStat['total_profit'], 0);
		echo '</p>';
		echo '<p>';
			echo '<b>Средний заказ:</b> ' . number_format($arrMonthStat['total_profit'] / $arrMonthStat['orders_amount'], 0);
		echo '</p>';
	}
}
?>